#ifndef SECURITYUTILS_H
#define SECURITYUTILS_H

#include <QRegularExpression>


class SecurityUtils {
public:
    // 验证表名: 只允许字母、数字和下划线
    static bool isValidTableName(const QString& name) {
        static QRegularExpression regex("^[a-zA-Z_][a-zA-Z0-9_]*$");
        return regex.match(name).hasMatch();
    }

    // 验证列名: 同表名规则
    static bool isValidColumnName(const QString& name) {
        static QRegularExpression regex("^[a-zA-Z_][a-zA-Z0-9_]*$");
        return regex.match(name).hasMatch();
    }

    // 验证SQL片段: 检测危险关键字
    // static bool isValidSqlFragment(const QString& fragment) {
    //     static QRegularExpression regex(
    //         "\\b(ALTER|CREATE|DELETE|DROP|EXEC|INSERT|MERGE|SELECT|TRUNCATE|UPDATE|UNION|OR)\\b",
    //         QRegularExpression::CaseInsensitiveOption
    //         );
    //     return !regex.match(fragment).hasMatch();
    // }

    // 验证值: 检测注入特征
    static bool isSafeValue(const QVariant& value) {

        if (value.metaType() == QMetaType(QMetaType::QString)) {
            QString str = value.toString();
            if (str.contains(';') ||
                str.contains("--") ||
                str.contains("/*") ||
                str.contains("*/") ||
                str.contains("xp_")) {
                return false;
            }
        }
        return true;
    }
};
#endif // SECURITYUTILS_H
